# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html


# useful for handling different item types with a single interface
from itemadapter import ItemAdapter
import sqlite3


class SQLitePipeline:
    def open_spider(self):
        # 连接到SQLite数据库
        self.conn = sqlite3.connect('../cq_gwy/cq_gwy/spiders/cq_gwy.db')
        self.cursor = self.conn.cursor()
        # 创建表（如果不存在）
        self.cursor.execute('''
            CREATE TABLE IF NOT EXISTS gwy_job_data (
                序号 INTEGER,
                地区部门 TEXT,
                招录单位 TEXT,
                咨询电话 TEXT,
                招录指标 TEXT,
                职位类别 TEXT,
                职位名称 TEXT,
                职级层次 TEXT,
                学历 TEXT,
                学位 TEXT,
                专业 TEXT,
                `2年及以上基层工作经历要求` TEXT,
                政治面貌 TEXT,
                笔试开考比例 TEXT,
                申论考试类型 TEXT,
                `专业科目考试-公安类专业科目` TEXT,
                `专业科目考试-法律基础知识` TEXT,
                体能测评比例 TEXT,
                `专业能力测试-是否设置` TEXT,
                `专业能力测试-测试比例` TEXT,
                面试比例 TEXT,
                考察比例 TEXT,
                其他要求 TEXT,
                职位描述 TEXT
            )
        ''')
        self.conn.commit()

    def close_spider(self):
        # 关闭数据库连接
        self.conn.close()

    def process_item(self, item):
        # 插入数据到表中
        self.cursor.execute('''
            INSERT INTO gwy_job_data (
                        序号,
                        地区部门,
                        招录单位,
                        咨询电话,
                        招录指标,
                        职位类别,
                        职位名称,
                        职级层次,
                        学历,
                        学位,
                        专业,
                        `2年及以上基层工作经历要求`,
                        政治面貌,
                        笔试开考比例,
                        申论考试类型,
                        `专业科目考试-公安类专业科目`,
                        `专业科目考试-法律基础知识`,
                        体能测评比例,
                        `专业能力测试-是否设置`,
                        `专业能力测试-测试比例`,
                        面试比例,
                        考察比例,
                        其他要求,
                        职位描述)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
        ''', (
            item.序号,
            item.地区部门,
            item.招录单位,
            item.咨询电话,
            item.招录指标,
            item.职位类别,
            item.职位名称,
            item.职级层次,
            item.学历,
            item.学位,
            item.专业,
            item.__getattr__('2年及以上基层工作经历要求'),
            item.政治面貌,
            item.笔试开考比例,
            item.申论考试类型,
            item.__getattr__('专业科目考试-公安类专业科目'),
            item.__getattr__('专业科目考试-法律基础知识'),
            item.体能测评比例,
            item.__getattr__('专业能力测试-是否设置'),
            item.__getattr__('专业能力测试-测试比例'),
            item.面试比例,
            item.考察比例,
            item.其他要求,
            item.职位描述
        ))
        self.conn.commit()
        return item